# -*- coding: utf-8 -*-
import tornado.ioloop
import tornado.web
import os
import json

import logging
import logging.handlers

# 确保日志目录存在
log_dir = "logs"
if not os.path.exists(log_dir):
    os.makedirs(log_dir)

# 配置日志记录器
logger = logging.getLogger("hourly_logger")
logger.setLevel(logging.DEBUG)  # 设置日志级别

# 创建并配置 TimeRotatingFileHandler
log_file = os.path.join(log_dir, "hourly_log.log")
handler = logging.handlers.TimedRotatingFileHandler(
    log_file, when="h", interval=1, backupCount=240  # 每小时滚动，保留最近24个文件
)

# 设置日志格式
formatter = logging.Formatter(
    "%(asctime)s - %(name)s - %(levelname)s - %(message)s"
)
handler.setFormatter(formatter)

# 将处理器添加到记录器
logger.addHandler(handler)

class MainHandler(tornado.web.RequestHandler):
    def get(self):
        self.write("Hello world")
        print("开始启动")
        try:
            # os.system("D:\software\数采软件\A工位\Debug20220603V1\Debug\iSmartPLCDataCollect.exe")
            # os.system("ipconfig")
            # os.system("cd D:\software\数采软件\A工位\Debug20220603V1\Debug")
            # os.system("dir")
            os.system(r"D:\software\Debug20220603V1\Debug\iSmartPLCDataCollect_start.bat")
        except Exception as e:
            print("e=", e)

        print("启动成功")

    def post(self):
        data = json.loads(self.request.body)
        # 将字典数据序列化为 JSON 字符串，并记录到日志中
        log_message = json.dumps(data, indent=4, sort_keys=True)  # indent 和 sort_keys 是可选的，用于美化输出

        # print(log_message)
        print(data)
        # print(type(data))
        # logging.INFO(str(log_message))

        # 将字典转换为字符串并记录
        # 方法1: 使用str()函数直接转换
        logger.info("%s", str(data))

class Application(tornado.web.Application):
    def __init__(self):
        handlers = [
            (r'/', MainHandler),
        ]
        tornado.web.Application.__init__(self, handlers)

if __name__=="__main__":
    app = Application()
    app.listen(9000)
    print("Tornado Started in port 9000，http://127.0.0.1:9000")
    tornado.ioloop.IOLoop.current().start()